﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BOL;
using DAL;
using System.Data.Linq;
using System.Data.SqlClient;
using Website.Logger;
using WebLib;

using System.Web.Script.Services;
using System.Web.Services;
using System.IO;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using UtilityExtensions;

namespace UILGestion.ObraAdmin.RendicionCaja
{
    public partial class RendicioneditForm : System.Web.UI.Page
    {
        public RendicioneditForm()
        {
            bol = new RendicionBL();
        }

        private RendicionBL bol;

        [WebMethod(), ScriptMethod()]
        public static string GetProveedor(String prefixText, String contextKey)
        {
            ProveedorBL bol = new ProveedorBL();


            return bol.getProveedorMasEmpleadoAll(prefixText, 20);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!this.IsPostBack)
                {
                    idInternal.Value = (string)Request.QueryString["id"];
                    idObra.Value = (string)Request.QueryString["idObra"];
                    type.Value = (string)Request.QueryString["type"];
                    menuObraCtrl1.loadMenu(idObra.Value.ToInt(), Request.AppRelativeCurrentExecutionFilePath);
                    FormatForm();
                }
            }
            
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }
       
        private void FormatForm()
        {

            var rendicion = DbUtil.Db.Rendicions.SingleOrDefault(p => p.idInternal == idInternal.Value.ToInt());
            
            numdocumentoLbl.Text = rendicion.numDocumento.ToString();
            descripcionTxt.Text = rendicion.descripcion;
            custodioTxt.Text = rendicion.Caja.Empleado.descripcion;
            cajaLbl.Text = rendicion.Caja.descripcion;
            monedaTxt.Text = "Soles";
            estadosTxt.Text = rendicion.GrupoDatoitem.descripcion;
            idCaja.Value = rendicion.idCaja.ToString();
            setestadistica();
            GrupoDatoitem IGV = DbUtil.Db.GrupoDatoitems.Single(p => p.idInternal == 10);
            IGVLBL.Text = IGV.descripcion;

            RendicionGrupoGrid1.Load(idInternal.Value,rendicion.idEstado,IGVLBL.Text.ToDecimal().Value);
            RendicionDepositoGrid1.Load(idInternal.Value,rendicion.idEstado,rendicion.idObra);

            
            //--botones segun estado del documento
            if (rendicion.idEstado == 39)
            {
                aprobarButton.Visible = false;
                desaprobarButton.Visible = false;
                desRevisarButton.Visible = false;
                RevisarButton.Visible = true;

            }
            if (rendicion.idEstado == 40)
            {
                aprobarButton.Visible = true;
                desaprobarButton.Visible = false;
                desRevisarButton.Visible = true;
                RevisarButton.Visible = false;

            }
            if (rendicion.idEstado == 41)
            {
                aprobarButton.Visible = false;
                desaprobarButton.Visible = true;
                desRevisarButton.Visible = false;
                RevisarButton.Visible = false;
                addGOHPL.Text = "Nuevo Gasto";
                addGOHPL.NavigateUrl = "~/ObraAdmin/OrdenCompras/GastoObraEditForm.aspx?idObra={0}&type=A".Fmt(idObra.Value);

            }
            if (rendicion.idEstado == 42)
            {
                aprobarButton.Visible = false;
                desaprobarButton.Visible = false;
                desRevisarButton.Visible = false;
                RevisarButton.Visible = false;
            }

            
           
        }
        public void setestadistica()
        {
            var rendicion=DbUtil.Db.Rendicions.Single(p=>p.idInternal==idInternal.Value.ToInt());

            saldoAnteriorLBL.Text = String.Format("{0} {1:N}", rendicion.Caja.Moneda.simbol, rendicion.saldoAnterior);
            fondoAsignadoLbl.Text = String.Format("{0} {1:N}", rendicion.Caja.Moneda.simbol, rendicion.totalDeposito);
            fondoGastadoLbl.Text = String.Format("{0} {1:N}", rendicion.Caja.Moneda.simbol, rendicion.toalIngreso);
            fondoSaldoLbl.Text = String.Format("{0} {1:N}", rendicion.Caja.Moneda.simbol, rendicion.totalSaldo);
            totalUpdatePanel.Update();
        }
           
        protected void Save(object sender, EventArgs e)
        {
            try{

            //if (((LinkButton)sender).ID == EliminarLBtn.ID)
            //{
            //    bol.Delete(idInternal.Value.ToInt());
            //    Response.Redirect("{0}ListForm.aspx".Fmt(entidad.Value));
            //}
            //if (((LinkButton)sender).ID == GuardarLBtn.ID)
            //{
            //    if (type.Value == "A")
            //        idInternal.Value = bol.Add(RUCTxt.Text,
            //                                                descripcionTxt.Text).ToString();
            //    if (type.Value == "E")
            //        bol.Update(idInternal.Value.ToInt(),
            //                                                    RUCTxt.Text,
            //                                                    descripcionTxt.Text).ToString();

            //    //coleccion de proyecto
               
            //    Response.Redirect("{0}ReadForm.aspx?id={1}".Fmt(entidad.Value,idInternal.Value),false); 
                
            //}


            }

            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('"+sqlex.Message.Replace("'","").Replace("\r","").Replace("\n","")+"');", true);
                //"uniqueKey" + DateTime.Now, "alert('"+sqlex.Message.Replace("'","").Replace("\r","").Replace("\n","")+"');", true);

            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

        protected void accion(object sender, EventArgs e)
        {
            try
            {
                Button boton=(Button)sender;

                if (boton.ID == anteriorButton.ID)
                {
                    var rendicion= new Rendicion();
                     int anterior = rendicion.getidAnterior(DbUtil.Db, int.Parse(idInternal.Value), int.Parse(idCaja.Value));
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + anterior.ToString(), true);

                }
                if (boton.ID == siguienteButton.ID)
                {
                    var rendicion = new Rendicion();
                    int siguiente = rendicion.getidSiguiente(DbUtil.Db, int.Parse(idInternal.Value), int.Parse(idCaja.Value));
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + siguiente.ToString(), true);

                }
                if (((Button)sender).ID == refreshButton.ID)
                {
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + idInternal.Value.ToString(), true);

                }
                if (((Button)sender).ID == aprobarButton.ID)
                {
                    bol.updateAprobacion(idInternal.Value.ToInt());
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + idInternal.Value, true);

                }
                if (((Button)sender).ID == desaprobarButton.ID)
                {
                    bol.updateDesAprobacion(idInternal.Value.ToInt());
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + idInternal.Value, true);

                }
                if (((Button)sender).ID == RevisarButton.ID)
                {
                    bol.updateRevisor(idInternal.Value.ToInt());
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + idInternal.Value, true);

                }
                if (((Button)sender).ID == desRevisarButton.ID)
                {
                    bol.updateDesRevisor(idInternal.Value.ToInt());
                    Response.Redirect("RendicionEditForm.aspx?idObra=" + idObra.Value + "&id=" + idInternal.Value, true);

                }
                
                

            }

            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "").Replace("\r", "").Replace("\n", "") + "');", true);
                //"uniqueKey" + DateTime.Now, "alert('"+sqlex.Message.Replace("'","").Replace("\r","").Replace("\n","")+"');", true);

            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }

        //protected void Button1_Click(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        //
        //        bol.updateCerrar(idInternal.Value.ToInt());
            
        //    }
        //    catch (SqlException sqlex)
        //    {
        //        WebServerSideSqlError.Log(sqlex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "").Replace("\r", "").Replace("\n", "") + "');", true);
        //        //"uniqueKey" + DateTime.Now, "alert('"+sqlex.Message.Replace("'","").Replace("\r","").Replace("\n","")+"');", true);

        //    }
        //    catch (Exception ex)
        //    {
        //        WebServerSideError.Log(ex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

        //    }
        //}



    }
}